package com.bysj.yqsht.service.impl;



import com.bysj.yqsht.bean.Matchs;
import com.bysj.yqsht.bean.MatchsApply;
import com.bysj.yqsht.bean.MatchsApplyExample;
import com.bysj.yqsht.bean.extend.MatchsApplyExtend;
import com.bysj.yqsht.dao.MatchsApplyMapper;
import com.bysj.yqsht.dao.MatchsMapper;
import com.bysj.yqsht.dao.extend.MatchsApplyExtendMapper;
import com.bysj.yqsht.dao.extend.MatchsExtendMapper;
import com.bysj.yqsht.service.IMatchsApplyService;
import com.bysj.yqsht.utils.CustomerException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class IMatchsApplyServiceImpl implements IMatchsApplyService {
    @Resource
    private MatchsApplyMapper matchsApplyMapper;

    @Resource
    private MatchsApplyExtendMapper matchsApplyExtendMapper;

    @Resource
    private MatchsExtendMapper matchsExtendMapper;
    @Resource
    private MatchsMapper matchsMapper;

    @Override
    public List<MatchsApply> findAll() {
        MatchsApplyExample example = new MatchsApplyExample();
        return matchsApplyMapper.selectByExample(example);
    }

    @Override
    public void saveOrUpdate(MatchsApply matchsApply) {
        List<MatchsApplyExtend> listMatch = matchsApplyExtendMapper.findApplyByStudent(matchsApply.getStudentId());
        Matchs matchs = matchsMapper.selectByPrimaryKey(matchsApply.getMatchId());
        String time1 = matchs.getTimea();
        String time2 = matchs.getTimeb();
        System.out.println("新增时间1："+time1);
        System.out.println("新增时间2："+time2);
        if (listMatch.size() > 0 ){
            for (MatchsApplyExtend matchs1 : listMatch){
                Long id = matchs1.getMatchs().getId();
                Matchs m1 = matchsMapper.selectByPrimaryKey(id);
                String timea=m1.getTimea();
                String timeb=m1.getTimeb();
                if (time1.compareTo(timea) > 0 && time1.compareTo(timeb) < 0 ){
                    throw new CustomerException("所报竞赛与已报竞赛时间冲突");
                }else if (time1.compareTo(timea) <0 && time2.compareTo(timea) >0 ){
                    throw new CustomerException("所报竞赛与已报竞赛时间冲突");
                }
            }
        }
        if(matchsApply.getId() != null){
            matchsApplyMapper.updateByPrimaryKey(matchsApply);
        }else{
            matchsApplyMapper.insert(matchsApply);
        }

    }

    @Override
    public void deleteById(long id) {
        matchsApplyMapper.deleteByPrimaryKey(id);

    }

    @Override
    public List<MatchsApplyExtend> findWithAll(int pageNum,int limit) {
        PageHelper.startPage(pageNum,limit);
        MatchsApplyExample matchsApplyExample = new MatchsApplyExample();
        List<MatchsApplyExtend> list1 = matchsApplyExtendMapper.selectWithAll();
        PageInfo<MatchsApplyExtend> data = new PageInfo<MatchsApplyExtend>(list1);
        List<MatchsApplyExtend> list = data.getList();
        return list;

    }

    @Override
    public List<MatchsApplyExtend> findWithAllBy(Long matchId, Long studentId) {
        return matchsApplyExtendMapper.findWithAllBy(matchId,studentId);
    }
}
